"""
访问闭包中定义的变量

问题：
    你想要扩展函数中的某个闭包，允许它能访问和修改函数的内部变量。
解决方案：
    通常来讲，闭包的内部变量对于外界来讲是完全隐藏的。
    但是，你可以通过编写访问函数并将其作为函数属性绑定到闭包上来实现这个目的。
"""


def say():
    content = ""

    def show():
        print(content)

    def get_content():
        return content

    def set_content(value):
        nonlocal content
        content = value

    show.get_content = get_content
    show.set_content = set_content
    return show


def use_say():
    f = say()
    f()
    f.set_content("注意力 > 时间 > 金钱")
    print(f.get_content())
    f()
    # 输出结果：
    """
    
    注意力 > 时间 > 金钱
    注意力 > 时间 > 金钱
    """


if __name__ == '__main__':
    use_say()
